//axios拦截器
import axios from "axios";
import router from "./router"
import ElementUI from 'element-ui'  //用于显示弹窗等
import config from '@/config';


axios.defaults.baseURL=config.baseURL   //访问后端的基础url

const request = axios.create({
  timeout:5000, //超时时间
  headers:{
    'content-Type':"application/json;charset=utf-8"
  }
})

//发送请求时拦截
request.interceptors.request.use(config=>{
  config.headers['Authorization']=localStorage.getItem("token") //每次请求都附带上jwt(除了获取验证码)
  return config
})


//得到响应时拦截
request.interceptors.response.use( response=>{
  let res = response.data;

  if(res.code === 200){ //状态码200为正常页面
    return response
  }else {
    ElementUI.Message.error(res.msg? res.msg : "系统异常")
    return Promise.reject(response.data.msg)    //结束本次响应
  }
},
  error => {    //400状态码会走这里
    if(error.response.data){
      error.message=error.response.data.msg
    }
    if(error.response.status === 401){  //状态码401表示没有权限，跳转到登录页面
      router.push("/login")
    }
    ElementUI.Message.error(error.message,{duration:3000})  //弹窗延迟 3s消失

    return Promise.reject(error)    //结束本次响应
  })

export default request  //暴露出去
